package com.chris.design.pattern.samples.observer.jdk;

/**
 * 1，创建 被观察者 对象；
 * 2，创建 观察者 对象，并把 被观察者 对象注册进去；
 * 3，修改 被观察者 对象的值，会调用 观察者 对象的notifyObservers方法通知 观察者 对象也进行修改变化（调用update方法）；
 *
 * @author Chris Shang
 */
public class Test {

    public static void main(String[] args) {
        // 被观察者对象
        Watched watched = new Watched();
        // 观察者对象
        Watcher wather = new Watcher(watched);
        watched.setData("first");
//        watched.setData("second");
//        watched.setData("third");
        System.out.println("countObservers:" + watched.countObservers());

//        Thread t1 = new Thread("t1") {
//            @Override
//            public void run() {
//                watched.setData("first");
//            }
//        };
//        Thread t2 = new Thread("t2") {
//            @Override
//            public void run() {
//                watched.setData("second");
//            }
//        };
//        Thread t3 = new Thread("t3") {
//            @Override
//            public void run() {
//                watched.setData("third");
//            }
//        };
//
//        t1.start();
//        t3.start();
//        t2.start();
//        t3.start();

    }
}
